<xs:schema targetNamespace="urn:nhibernate-validator-1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:nhibernate-validator-1.0" xmlns:NS="urn:nhibernate-validator-1.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="property">
		<xs:complexType>
			<xs:sequence>
				<xs:choice maxOccurs="unbounded" minOccurs="0">
					<xs:element ref="not-null" />
					<xs:element ref="not-empty" />
					<xs:element ref="length" />
					<xs:element ref="future" />
					<xs:element ref="past" />
					<xs:element ref="email" />
					<xs:element ref="size" />
					<xs:element ref="range" />
					<xs:element ref="min" />
					<xs:element ref="pattern" />
					<xs:element ref="asserttrue" />
					<xs:element ref="rule" />
					<xs:element ref="max" />
					<xs:element ref="decimalmax" />
					<xs:element ref="decimalmin" />
					<xs:element ref="notnull-notempty" />
					<xs:element ref="ipaddress" />
					<xs:element ref="digits" />
					<xs:element ref="ean" />
					<xs:element ref="creditcardnumber" />
					<xs:element ref="assertfalse" />
					<xs:element ref="fileexists" />
					<xs:element ref="valid" />
					<xs:element ref="iban" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string" use="required" />
		</xs:complexType>
	</xs:element>
	<xs:element name="nhv-mapping">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="1" ref="class" />
			</xs:sequence>
			<xs:attribute name="namespace" type="xs:string" use="optional">
				<xs:annotation>
					<xs:documentation>Namespace used to find not-Fully Qualified Type Names</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="assembly" type="xs:string" use="optional">
				<xs:annotation>
					<xs:documentation>Assembly used to find not-Fully Qualified Type Names</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="not-null">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="not-empty">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="length">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="min" type="xs:int" use="optional" />
			<xs:attribute name="max" type="xs:int" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="future">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="past">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="email">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="message" type="xs:string" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="size">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="min" type="xs:int" use="optional" />
			<xs:attribute name="max" type="xs:int" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="range">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="min" type="xs:long" use="optional" />
			<xs:attribute name="max" type="xs:long" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="min">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="value" type="xs:long" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="pattern">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="regex" type="xs:string" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="regex-options" type="xs:string" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="asserttrue">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="class">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="attributename" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType mixed="true">
						<xs:attribute name="message" type="xs:string" />
					</xs:complexType>
				</xs:element>
				<xs:sequence maxOccurs="unbounded" minOccurs="0">
					<xs:element ref="property" minOccurs="0" maxOccurs="unbounded" />
				</xs:sequence>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string" use="required" />
		</xs:complexType>
	</xs:element>
	<xs:element name="rule">
		<xs:complexType>
			<xs:sequence>
				<xs:sequence minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="param" />
				</xs:sequence>
			</xs:sequence>
			<xs:attribute name="attribute" type="xs:string" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="param">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string" />
			<xs:attribute name="value" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="max">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="value" type="xs:long" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="decimalmax">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="value" type="xs:decimal" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="decimalmin">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="value" type="xs:decimal" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="notnull-notempty">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="ipaddress">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="digits">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="integerDigits" type="xs:int" use="required" />
			<xs:attribute name="fractionalDigits" type="xs:int" use="optional" />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="ean">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="creditcardnumber">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="assertfalse">
		<xs:complexType>
			<xs:sequence>
			</xs:sequence>
			<xs:attribute name="message" type="xs:string" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="fileexists">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="valid">
		<xs:complexType>
			<xs:sequence />
		</xs:complexType>
	</xs:element>
	<xs:element name="iban">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="message" type="xs:string" use="optional" />
			<xs:attribute name="tags" type="xs:string" use="optional" />
		</xs:complexType>
	</xs:element>
</xs:schema>